AWSumeで取得したIAMロールの一時クレデンシャル有効期限を延ばしてみた

AWSumeで取得したIAMロールの一時クレデンシャル有効期限を延ばしてみた

はじめに

AWSumeを、複数AWS環境のスイッチロールを実現するコマンドラインツールとして使われている方もいらっしゃるのではないでしょうか。

https://awsu.me/

何も指定しないとクレデンシャルの有効期限がデフォルトでは1時間ですので、長いスクリプトを動かすときに途中で有効期限切れになって再度ロール更新が必要です。
そのため、有効期限を延ばす方法を記載します。

長くしてみた

公式ドキュメントは15分から12時間(=60×60×12秒)の間で延長ができるみたいでした。
なので、最長の12時間を指定してみます。

$ awsume nakano-dev --role-duration 43200
Enter MFA token: ****
[nakano-dev] Role credentials will expire 2024-08-30 01:45:22

1時間から12時間に延長できました。

エラーになった

最初何も考えず実行するとエラーになりました。

$ awsume nakano-dev --role-duration 43200
Enter MFA token: ****
Awsume error: An error occurred (ValidationError) when calling the AssumeRole operation: The requested DurationSeconds exceeds the MaxSessionDuration set for this role.

どうやら、引き受けるロールの最大セッション時間が1時間になっていることが原因でした。

スクリーンショット_2024-08-29_13_45_00

マネコンの編集ボタンから12時間に変更後に、AWSumeを実行すると成功しました。

スクリーンショット 2024-08-29 13.50.56

さらに、別の方法で試してみた

ロールの有効期限期間の指定方法はいくつかあって、複数を指定できるみたいです。
複数指定すると優先順位に従って、高い方から採用されます。

1. --role-duration​
2. スイッチロールするプロファイルのrole_durationプロパティ
3. Awsumeのグローバル設定のrole-durationプロパティ

複数の方法で設定してみた

2番の場合は以下のように指定します。
duration_secondsは15分以上でないといけません
2番は有効期限を15分に指定しました。

~/.aws/config
 [profile nakano-dev]
 role_arn = arn:aws:iam::******:role/cm-nakano.yoshiyuki
 mfa_serial = arn:aws:iam::******:mfa/cm-nakano.yoshiyuki
 source_profile = default
 duration_seconds = 900

3番の場合は以下です。
有効期限を3時間に指定しました。

~/.awsume/config.yaml
colors: true
fuzzy-match: false
role-duration: 10800

ロール優先順の結果

結果です。

2番と3番を同時設定

2番と3番を指定した状態で、実行すると2番が優先されました。
ちゃんと現在時刻の15分後になっています。

$ date
Thu Aug 29 15:36:29 JST 2024

$ awsume nakano-dev
Session token will expire at 2024-08-30 00:22:55
[nakano-dev] Role credentials will expire 2024-08-29 15:51:37

1番、2番、3番を同時設定

1番、2番、3番を全て指定すると、1番が優先されました。
ちゃんと現在時刻の12時間後になっています。

$ date
Thu Aug 29 15:37:16 JST 2024

$ awsume nakano-dev --role-duration 43200
Enter MFA token: 470195
[nakano-dev] Role credentials will expire 2024-08-30 03:37:28

おわりに

誰かのお役に立てれば。

参考

https://awsu.me/advanced/role-duration.html
https://awsu.me/utilities/awsume-configure.html

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.